home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
001-025
/
scopedisk1
/
files
/
main.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-18
|
6KB
|
289 lines
/*
* MAIN.C
*
* FILES
*
* A file catalog program by Matthew Dillon.
*
* (c)Copyright 1987 Matthew Dillon, All Rights Reserved.
*
*/
#include "files.h"
#include <xmisc.h>
NW Nw = {
30, 30, 500, 150, -1, -1,
NEWSIZE|MOUSEBUTTONS|MOUSEMOVE|GADGETDOWN|GADGETUP|MENUPICK|CLOSEWINDOW,
WINDOWSIZING|WINDOWDRAG|WINDOWDEPTH|WINDOWCLOSE|NOCAREREFRESH|ACTIVATE,
NULL, NULL, (ubyte *)"V1.1 by Matthew Dillon, Catalog Utility.", NULL,
NULL, 182, 66, -1, -1, WBENCHSCREEN
};
WIN *Win;
RP *Rp;
char FileName[128] = { "s:catalog.db" };
main()
{
char resized = 0;
char notdone = 1;
char movebox = 0;
char moveslider = 0;
char addactive = 0;
char noload = 1;
char dontquit = 0;
char mmove = 0;
short mmy;
IMESS *im;
openlibs(INTUITION_LIB|GRAPHICS_LIB);
initslider(&Nw);
Win = OpenWindow(&Nw);
failfalse(Win, "Unable to open window");
Rp = Win->RPort;
addmenus();
addgadgets();
again:
for (; notdone || dontquit;) {
if (dontquit)
notdone = 1;
dontquit = 0;
WaitPort(Win->UserPort);
while (im = GetMsg(Win->UserPort)) {
switch(im->Class) {
case NEWSIZE:
resized = 1;
break;
case MOUSEBUTTONS:
break;
case MOUSEMOVE:
mmove = 1;
mmy = im->MouseY;
break;
case GADGETDOWN:
{
char *str = NULL;
short sel;
switch(getgadget(im, &sel, &str)) {
case GAD_SLIDER:
moveslider = 1;
movebox = 0;
sliderhit();
break;
case GAD_BIGBOX:
moveslider = 0;
movebox = 1;
bigboxhit(im->MouseY, 0);
break;
}
}
break;
case GADGETUP:
{
char *str = NULL;
short sel;
switch(getgadget(im, &sel, &str)) {
case GAD_INFO:
{
long fh = Open("raw:10/24/600/150/INFO", 1006);
if (fh) {
char buf[8];
fhprintf(fh, "\n\r\n\rVersion 1.1 Written by Matthew Dillon\n\r");
fhprintf(fh, "(c)Copyright 1987 Matthew Dillon, All Rights Reserved.\n\n\r");
fhprintf(fh, " dillon@ucbvax.berkeley.edu (ARPANET)\n\r");
fhprintf(fh, " ...!ihnp4!ucbvax!dillon (USENET)\n\r");
fhprintf(fh, "Matthew Dillon, 891 Regal Rd. Berkeley, Ca. 94708\n\n\r");
fhprintf(fh, "This software is freely redistributable only. This\n\r");
fhprintf(fh, "software is NOT shareware\n\n\r");
fhprintf(fh, "Thanks to Peter Da Silva for providing the filerequestor\n\r");
fhprintf(fh, "\n\n Any key to continue\n\r");
Read(fh, buf, 1);
Close(fh);
}
}
break;
case GAD_DEL:
rem_selected(Highlighted, 0);
break;
case GAD_UNDO:
undo();
break;
case GAD_ALL:
selectall();
redisplay(0);
break;
case GAD_VOLUME:
if (str[0])
add_volume(str);
activate_vol();
break;
case GAD_PATTERN:
if (str[0]) {
title("Wait");
select_pattern(str, 0);
}
activate_pat();
break;
case GAD_COMMENT:
mod_comment(str);
break;
case GAD_SLIDER:
moveslider = 0;
sliderhit();
break;
case GAD_BIGBOX:
movebox = 0;
bigboxhit(im->MouseY, 1);
break;
}
}
break;
case MENUPICK:
switch(getmenu(im)) {
case MEN_SAVE:
{
FILE *fi;
if (noload && NumEntries == 0) {
title("Did I just save you from making a mistake?");
break;
}
fi = fopen(FileName, "w");
if (fi) {
save_database(fi);
if (ferror(fi)) {
title("File Error");
dontquit = 1;
} else {
title("Saved ok");
Modified = 0;
}
fclose(fi);
} else {
title("Unable to open file for write");
}
}
break;
case MEN_SAVEAS:
{
FILE *fi;
if (stdfile("SAVE DATABASE", FileName, "", FileName)) {
noload = 0;
if (fi = fopen(FileName, "w")) {
save_database(fi);
if (ferror(fi)) {
title("File Error");
dontquit = 1;
} else {
title("Saved ok");
Modified = 0;
}
fclose(fi);
} else {
title("Unable to open file for write");
}
}
}
break;
case MEN_LOADEF:
{
FILE *fi = fopen(FileName, "r");
long entries = NumEntries;
if (fi) {
noload = 0;
load_database(fi);
if (!entries)
Modified = 0;
fclose(fi);
} else {
title("Unable to open file for read");
}
}
break;
case MEN_LOAD:
{
FILE *fi;
long entries = NumEntries;
if (stdfile("LOAD DATABASE", FileName, "", FileName)) {
noload = 0;
if (fi = fopen(FileName, "r")) {
load_database(fi);
if (!entries)
Modified = 0;
fclose(fi);
} else {
title("Unable to open file for read");
}
}
}
break;
case MEN_QUIT:
notdone = 0;
break;
case MEN_KILLPAT:
resetsort();
addentry(KILLNAME, "", 0);
select_pattern(KILLNAME, 0);
break;
}
break;
case CLOSEWINDOW:
notdone = 0;
break;
}
ReplyMsg(im);
if (resized) {
fixgadgets();
redisplay(0);
}
resized = 0;
}
if (mmove) {
if (moveslider)
sliderhit();
if (movebox)
bigboxhit(mmy, 0);
mmove = 0;
}
}
if (Modified) {
title("MODIFICATIONS MADE! HIT CLOSE-BOX AGAIN TO VERIFY");
Modified = 0;
notdone = 1;
goto again;
}
failfalse(NULL, NULL);
}
failfalse(val, str)
long val;
char *str;
{
if (val == NULL) {
if (str)
puts(str);
if (Win) {
remmenus();
remgadgets();
CloseWindow(Win);
Win = NULL;
}
closelibs(-1);
exit((str)? 1 : 0);
}
}
failtrue(val, str)
long val;
char *str;
{
if (val)
failfalse(NULL, str);
}